﻿CREATE PROCEDURE [dbo].[LedgerOperationsVsTransTypesInsert]
(--список типов продводок, которые экспортируются в 1С для заданного типа операции
	@LedgerOperationId int,
	@LedgerTransTypeId int,
	@Note varchar(250),
	@MD datetime OUTPUT,
	@MW varchar(50) OUTPUT,
	@Id int OUTPUT
)
AS
DECLARE @strMsg nvarchar(500), @intRet int, @intErrCode int
DECLARE @intNextId int
SET NOCOUNT ON

IF (@LedgerOperationId Is Null) OR (@LedgerTransTypeId Is Null)
BEGIN
	SELECT @intErrCode = 1, @strMsg = 'Неправильные параметры в вызове процедуры ' + Object_Name(@@Procid) + ' !'
	RAISERROR (@strMsg, 11, @intErrCode)
	RETURN @intErrCode
END

IF EXISTS (SELECT TOP 1 ID FROM [CO].LedgerOperationsVsTransTypes 
WHERE LedgerOperationId = @LedgerOperationId 
AND LedgerTransTypeId = @LedgerTransTypeId
AND ToDelete = 0 )
BEGIN
	SELECT @intErrCode = 2, @strMsg = 'Дублируется тип проводки для операции!'
	RAISERROR (@strMsg, 11, @intErrCode)
	RETURN @intErrCode
END

IF NOT EXISTS (SELECT DepartmentId FROM PR.DepartmentOptions WHERE DepartmentId = 0 ) 
BEGIN
	SELECT @intErrCode = 3, @strMsg = 'Изменять данные спрвочников можно только в офисе!'
	RAISERROR (@strMsg, 11, @intErrCode)
	RETURN @intErrCode
END

EXEC [dbo].[ProcessStatistic] @Note OUTPUT, @MD OUTPUT, @MW OUTPUT
--получение значения идентификатора
EXEC @intRet = dbo.GetNextCounterFor 'Common', @intNextId OUTPUT
IF @intRet <> 0 RETURN @intRet

	SET NOCOUNT OFF;
INSERT INTO [CO].LedgerOperationsVsTransTypes ( Id, LedgerOperationId, LedgerTransTypeId, 
[Note], [MD], [MW], ToDelete)
VALUES (@intNextId, @LedgerOperationId, @LedgerTransTypeId, @Note, @MD, @MW, 0);
	
--SELECT Id, LedgerOperationId, LedgerTransTypeId, Note, MD, MW, ToDelete
--FROM CO.LedgerOperationsVsTransTypes WHERE (Id = @intNextId)

SELECT @Id = @intNextId

RETURN 0
